#include <stdio.h>
#include <time.h>
#include <stdlib.h>

typedef void (*callback) (int val);
callback cb = NULL;

void funcHello() {printf("hello\n");}

void func11(int val) {funcHello();}
void func12(int val) {funcHello();}
void func21(int val) {funcHello();}
void func22(int val) {funcHello();}

void func3(int val)
{
	funcHello();
}

void func2(int val)
{
        switch(val%2) {
        case 0:
                func21(val);
                break;
        case 1:
                func22(val);
                break;
        default:
                return;
	}
}

void func1(int val)
{
        switch(val%2) {
        case 0:
                func11(val);
                break;
        case 1:
                func12(val);
                break;
        default:
                return;
	}
}

void func(int val)
{
	switch(val%3) {
	case 0:
		func1(val);
		break;
	case 1:
		func2(val);
		break;
	case 2:
		func3(val);
		break;
	default:
		return;
	}
}

int main()
{
	srand(time(NULL));
	func(rand());
	return 0;
}
